<template><div><h2 id="说说微服务有哪些组件" tabindex="-1"><a class="header-anchor" href="#说说微服务有哪些组件"><span>说说微服务有哪些组件？</span></a></h2>
<ol>
<li>注册中心
<ul>
<li>Spring Cloud Netflix：Eureka、Consul</li>
<li>Spring Cloud Alibaba：Nacos</li>
<li>Zookeeper</li>
</ul>
</li>
<li>配置中心
<ul>
<li>Spring Cloud Netflix：Spring Cloud Config</li>
<li>Spring Cloud Alibaba Nacos</li>
</ul>
</li>
<li>远程调用
<ul>
<li>RESTful API：RestTemplate、Feign</li>
<li>RPC：如Dubbo、gRPC</li>
</ul>
</li>
<li>API网关
<ul>
<li>Spring Cloud Netflix：Zuul、Gateway</li>
<li>Spring Cloud Alibaba：Gateway、Apisix等</li>
</ul>
</li>
<li>分布式事务
<ul>
<li>Spring Cloud Alibaba：Seata</li>
</ul>
</li>
<li>熔断器
<ul>
<li>Spring Cloud Netflix：Hystrix</li>
<li>Spring Cloud Alibaba：Sentinel、Resilience4j</li>
</ul>
</li>
<li>限流和降级
<ul>
<li>Spring Cloud Netflix：Hystrix</li>
<li>Spring Cloud Alibaba：Sentinel</li>
</ul>
</li>
<li>分布式链路追踪和监控
<ul>
<li>Spring Cloud Netflix：Spring Cloud Sleuth+Zipkin</li>
<li>Spring Cloud Alibaba：SkyWalking、Sentinel Dashboard</li>
</ul>
</li>
</ol>
<h2 id="oauth2授权方式" tabindex="-1"><a class="header-anchor" href="#oauth2授权方式"><span>OAuth2授权方式</span></a></h2>
<h4 id="什么是oauth-2-0" tabindex="-1"><a class="header-anchor" href="#什么是oauth-2-0"><span>什么是OAuth 2.0</span></a></h4>
<p>OAuth 2.0（开放授权2.0）是一种用于授权的开放标准，允许用户让第三放应用访问他们在某一网站上存储的私有资源，而无需将用户名和密码提供给第三方应用。OAuth 2.0是OAuth协议的升级版本，提供了更简化和灵活的授权流程。
在OAuth 2.0中，授权过程包括以下主要角色：</p>
<ol>
<li><strong>资源所有用（Resource Owner）：</strong> 即用户，是拥有受保护资源的实体。用户通过授权第三方应用访问他们额度资源。</li>
<li><strong>客户端（Client）：</strong> 即第三方应用，需要访问资源所有者的受保护资源。</li>
<li><strong>授权服务器（Authorization Serever）：</strong> 负责验证资源所有者并颁发访问令牌给客户端。授权服务器和资源服务器可以是同一个服务或不同的服务。</li>
<li><strong>资源服务器（Resource Server）：</strong> 存储受保护资源的服务器，通过访问令牌验证并提供受保护的资源。
在OAtuh 2.0 中，定义了多种授权方式 <strong>（授权码模式、隐式授权模式、密码模式、客户端凭证模式等）</strong>，客户端通过与授权服务器交互，获取访问令牌，然后使用访问令牌访问受保护资源。</li>
</ol>
<h4 id="授权码模式" tabindex="-1"><a class="header-anchor" href="#授权码模式"><span>授权码模式</span></a></h4>
<ol>
<li>客户端请求授权</li>
<li>用户同意授权</li>
<li>授权服务器发送授权码</li>
<li>客户端获取访问令牌</li>
<li>授权服务器发放访问令牌</li>
<li>客户端使用访问令牌</li>
</ol>
<h2 id="在分布式系统中-如何确定哪些服务或组件导致了性能瓶颈-skywalking提供了哪些工具和技术来帮助我们进行故障排查" tabindex="-1"><a class="header-anchor" href="#在分布式系统中-如何确定哪些服务或组件导致了性能瓶颈-skywalking提供了哪些工具和技术来帮助我们进行故障排查"><span>在分布式系统中，如何确定哪些服务或组件导致了性能瓶颈？SkyWalking提供了哪些工具和技术来帮助我们进行故障排查？</span></a></h2>
<p>SkyWalking是一个针对分布式系统的应用性能监控（APM）和可观测性分析平台。
SkyWaliking具有服务、服务实例、端点指标分析功能，可以监控并收集各种性能指标，如请求响应时间、调用频率等。通过对这些数据进行分析，可以初步判断哪些服务或组件的响应时间过长或调用频率过高，可能导致了性能瓶颈。</p>
<ol>
<li>提供了服务拓扑图分析功能：可以清晰地展示分布式系统中各个服务之间的调用关系。通过观察服务拓扑图，可以快速定位到被频繁调用的服务或调用链路中的瓶颈。</li>
<li>提供了根本原因分析功能，可以帮助我们进一步了解导致性能问题的具体原因。例如，通过分析请求的HTTP状态码、异常信息、系统资源使用情况等，可以找出导致请求失败的根源。</li>
<li>提供了上下文传播和分布式跟踪功能，可以帮助我们跟踪请求在分布式系统中的传播路径，了解请求在各服务之间的调用情况，找出调用过程中出现的问题。</li>
</ol>
<h2 id="skywalking中的数据是如何收集和传输的" tabindex="-1"><a class="header-anchor" href="#skywalking中的数据是如何收集和传输的"><span>SkyWalking中的数据是如何收集和传输的？</span></a></h2>
<ol>
<li><strong>数据采集</strong></li>
<li><strong>数据传输</strong></li>
<li><strong>数据消费</strong></li>
</ol>
<h2 id="使用oauth2时-如何存储和传输敏感信息-例如用户名和密码" tabindex="-1"><a class="header-anchor" href="#使用oauth2时-如何存储和传输敏感信息-例如用户名和密码"><span>使用OAuth2时，如何存储和传输敏感信息，例如用户名和密码</span></a></h2>
<p>使用OAuth2时，不建议直接存储和传输敏感信息，这是由于OAuth2协议自身的设计，它鼓励使用临时凭证（例如访问令牌和刷新令牌）进行安全的授权和认证。</p>
<p>以下是使用OAuth2时存储和传输敏感信息的常见做法：</p>
<ol>
<li><strong>用户登录并授权</strong></li>
<li><strong>访问令牌的使用</strong></li>
<li><strong>刷新令牌的使用</strong></li>
<li><strong>敏感信息的存储</strong></li>
<li><strong>安全的通信协议</strong></li>
</ol>
<h2 id="使用oauth2有什么优点和缺点" tabindex="-1"><a class="header-anchor" href="#使用oauth2有什么优点和缺点"><span>使用OAuth2有什么优点和缺点</span></a></h2>
<h2 id="如何处理oauth2的刷新令牌" tabindex="-1"><a class="header-anchor" href="#如何处理oauth2的刷新令牌"><span>如何处理OAuth2的刷新令牌</span></a></h2>
<h2 id="什么是限流算法-网关如何实现限流" tabindex="-1"><a class="header-anchor" href="#什么是限流算法-网关如何实现限流"><span>什么是限流算法，网关如何实现限流</span></a></h2>
<p>限流算法是指用于限制单位时间内服务的请求数量的算法，目的是防止服务被过高的请求压力所压垮。常见的限流算法包括<strong>计数器算法、滑动窗口算法、漏桶算法、令牌桶算法</strong>。</p>
<p>网关如何实现限流：</p>
<ol>
<li><strong>利用限流算法插件/模块：</strong></li>
<li><strong>自定义限流逻辑</strong></li>
<li><strong>利用云平台提供的限流功能：</strong></li>
</ol>
<h2 id="在微服务架构中-网关的作用是什么" tabindex="-1"><a class="header-anchor" href="#在微服务架构中-网关的作用是什么"><span>在微服务架构中，网关的作用是什么？</span></a></h2>
<ol>
<li><strong>统一入口</strong></li>
<li><strong>鉴权校验</strong></li>
<li><strong>动态路由</strong></li>
<li><strong>降低耦合度</strong></li>
<li><strong>提供附加功能</strong></li>
</ol>
<h2 id="什么是seata-说说你对seata的理解以及它的工作原理是什么" tabindex="-1"><a class="header-anchor" href="#什么是seata-说说你对seata的理解以及它的工作原理是什么"><span>什么是Seata，说说你对Seata的理解以及它的工作原理是什么？</span></a></h2>
<h2 id="什么情况下需要用到分布式事务" tabindex="-1"><a class="header-anchor" href="#什么情况下需要用到分布式事务"><span>什么情况下需要用到分布式事务</span></a></h2>
<h2 id="说说seata的执行流程" tabindex="-1"><a class="header-anchor" href="#说说seata的执行流程"><span>说说Seata的执行流程</span></a></h2>
<h2 id="sentinel是什么-它是如何工作的" tabindex="-1"><a class="header-anchor" href="#sentinel是什么-它是如何工作的"><span>Sentinel是什么？它是如何工作的？</span></a></h2>
<h2 id="sentinel与hystrox的区别是什么" tabindex="-1"><a class="header-anchor" href="#sentinel与hystrox的区别是什么"><span>Sentinel与Hystrox的区别是什么</span></a></h2>
<p><strong>Hystrix是Netflix开源的熔断器实现，主要用于保护分布式系统中的服务调用。</strong></p>
<p><strong>Sentinel是阿里巴巴开源的流量控制和系统保护工具，主要用于实现微服务机构中的流量控制、熔断、降级和系统负载保护等。</strong></p>
<h2 id="如果sentinel的异常处理规则不满足需求-应该怎么办" tabindex="-1"><a class="header-anchor" href="#如果sentinel的异常处理规则不满足需求-应该怎么办"><span>如果Sentinel的异常处理规则不满足需求，应该怎么办？</span></a></h2>
<h2 id="什么是降级熔断-为什么要进行熔断" tabindex="-1"><a class="header-anchor" href="#什么是降级熔断-为什么要进行熔断"><span>什么是降级熔断？为什么要进行熔断？</span></a></h2>
<h2 id="说说ribbon和fiegn的区别" tabindex="-1"><a class="header-anchor" href="#说说ribbon和fiegn的区别"><span>说说Ribbon和Fiegn的区别</span></a></h2>
<p><strong>Ribbon是一个客户端负载均衡器。</strong></p>
<p><strong>Fiegn则是一个声明式的HTTP客户端</strong></p>
<h2 id="nacos的服务注册表结构式怎样的" tabindex="-1"><a class="header-anchor" href="#nacos的服务注册表结构式怎样的"><span>Nacos的服务注册表结构式怎样的？</span></a></h2>
<h2 id="nacos中的namespace是什么-如何使用它来组织和管理微服务" tabindex="-1"><a class="header-anchor" href="#nacos中的namespace是什么-如何使用它来组织和管理微服务"><span>Nacos中的Namespace是什么？如何使用它来组织和管理微服务？</span></a></h2>
<h2 id="说说你对ddd的理解" tabindex="-1"><a class="header-anchor" href="#说说你对ddd的理解"><span>说说你对DDD的理解</span></a></h2>
<p><strong>领域驱动设计（DDD）是一种软件开发方法</strong>，旨在帮助开发人员更好地理解和设计复杂的软件系统。它的主要目的是让开发人员和领域专家能够更好地协作，以满足业务需求。</p>
<p><strong>DDD的关键概念包括领域模型和限界上下文</strong>。领域模型描述了业务领域的规则和逻辑，让开发人员更好的理解业务需求；限界上下文则定义了一个特定的业务领域内的模型和代码，使其可以独立于其他的上下文进行开发和维护。</p>
<p>此外，<strong>DDD还强调了分层架构和事件溯源的重要性</strong>。分层架构将系统划分为不同层次，各层次有不同的职责和角色，便于开发和维护；事件溯源则是一种存储和处理业务事件的技术，支持审计、合规和业务分析等需求。</p>
<h2 id="nacos、eureka、zookeeper注册中心的区别" tabindex="-1"><a class="header-anchor" href="#nacos、eureka、zookeeper注册中心的区别"><span>Nacos、Eureka、Zookeeper注册中心的区别</span></a></h2>
<h2 id="说说单体应用、微服务架构和soa有什么区别" tabindex="-1"><a class="header-anchor" href="#说说单体应用、微服务架构和soa有什么区别"><span>说说单体应用、微服务架构和SOA有什么区别</span></a></h2>
<h2 id="说说你对微服务是怎么理解的" tabindex="-1"><a class="header-anchor" href="#说说你对微服务是怎么理解的"><span>说说你对微服务是怎么理解的</span></a></h2>
<p>微服务是一种架构思想，它将应用程序拆分为一系列小型、独立的服务，每个服务负责处理一项特定的业务功能。这种构架风格的特点是<strong>服务之间松散耦合、独立部署和运行</strong>。
微服务架构使得开发人员可以法更加专注于单个服务的开发与测试，降低了系统的复杂性，提高了系统的可维护性和可扩展性。
同时，每个服务可以根据具体的业务需求选择合适的语言、工具进行构建，提高了系统的灵活性和可维护性。在微服务架构中，<strong>服务之间通过轻量级的通信机制（如RPC、HTTP等）进行通信</strong>，每个服务都可以独立进行部署、扩展以及升级，从而提高了系统的可靠性和可用性。
总的来说，微服务架构思想使得应用程序更加灵活、可维护和可扩展，为构建更高效、可靠的大型应用程序提供了有力支持。</p>
</div></template>


